Software systems in the modern era are constantly being upgraded to add additional features, perform additional functionality, improve user interfaces, etc. In many cases, however, upgrading to a new system may require data used by the old system to be migrated into the new system. But such data migration can be a very lengthy and time-consuming process. These migrations can take several hours or even days of system downtime in which the system cannot be used by customers.
Accordingly it is advantageous to perform data migration operations in parallel with operations performed in an active system and accepting new data. To accomplish this, one issue that arises is that the copied data entries from the database tables of the system must be maintained in a consistent state when migrating to the new system. This means that semantic dependencies between database tables in the old system must be consistent and reflect those dependencies when migrating to a new system.